#pragma once

namespace gk
{
	struct StreamElement
	{
		cr::HashedString	m_hsName;
		cr::HashedString	m_hsSemantic;
		cr::HashedString	m_hsType;
		cr::uint32_t		m_offset;
		char				m_name[Constants::MaxStreamElementNameLength];

		void Set(const char* szName, cr::HashedString hsName, cr::HashedString hsSemantic, cr::HashedString hsType, cr::size_t offset)
		{
			m_hsName = hsName;
			m_hsSemantic = hsSemantic;
			m_hsType = hsType;
			m_offset = offset;
			sprintf_s(m_name, Constants::MaxStreamElementNameLength, "%s", szName);
		}
	};

	struct StreamDescription
	{
		StreamElement				m_elements[Constants::MaxStreamElements];
		cr::uint32_t				m_numElements;
		cr::uint32_t				m_stride;

		StreamDescriptionInternal	m_internal;
	};

	typedef cr::Handle<StreamDescription> StreamDescriptionHandle;
}